OAuth2 হল একটি ইন্ডাস্ট্রি-স্ট্যান্ডার্ড প্রোটোকল যা সিকিউরড অথরাইজেশন মেকানিজম প্রদান করে। Spring Boot-এ OAuth2 ইন্টিগ্রেশন সহজে করা যায় Spring Security ফ্রেমওয়ার্ক ব্যবহার করে। এটি ব্যবহার করে আপনার অ্যাপ্লিকেশন থার্ড-পার্টি প্রোভাইডার (যেমন Google, GitHub, Facebook) থেকে অথেন্টিকেশন এবং অথরাইজেশন পেতে পারে।
OAuth2 ইন্টিগ্রেশন পদ্ধতি
Spring Boot অ্যাপ্লিকেশনে OAuth2 ইন্টিগ্রেশনের ধাপগুলো নিম্নরূপ:
১. প্রকল্প তৈরি
Spring Initializer (start.spring.io) ব্যবহার করে প্রজেক্ট তৈরি করুন। নিচের ডিপেন্ডেন্সিগুলি যোগ করুন:
- Spring Boot Starter Web
- Spring Boot Starter OAuth2 Client
- Spring Boot Starter Security
Maven Dependency (pom.xml):
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
</dependencies>
২. Application Configuration
application.properties বা application.yml ফাইলে কনফিগারেশন:
spring.security.oauth2.client.registration.google.client-id=YOUR_GOOGLE_CLIENT_ID
spring.security.oauth2.client.registration.google.client-secret=YOUR_GOOGLE_CLIENT_SECRET
spring.security.oauth2.client.registration.google.redirect-uri={baseUrl}/login/oauth2/code/google
spring.security.oauth2.client.registration.google.scope=openid,profile,email
spring.security.oauth2.client.registration.google.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.google.client-name=Google
spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/auth
spring.security.oauth2.client.provider.google.token-uri=https://oauth2.googleapis.com/token
spring.security.oauth2.client.provider.google.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo
spring.security.oauth2.client.provider.google.jwk-set-uri=https://www.googleapis.com/oauth2/v3/certs
spring.security.oauth2.client.provider.google.user-name-attribute=sub
OAuth2 Provider Configuration:
উদাহরণে Google ব্যবহার করা হয়েছে। আপনি GitHub, Facebook ইত্যাদিও কনফিগার করতে পারেন।
৩. Spring Security Configuration
Spring Security কনফিগারেশনে OAuth2 Login সেটআপ করতে হবে।
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/login").permitAll() // Public URL
.anyRequest().authenticated() // Secure All Other URLs
.and()
.oauth2Login() // Enable OAuth2 Login
.defaultSuccessUrl("/welcome", true); // Redirect after successful login
return http.build();
}
}
৪. Controller তৈরি করুন
OAuth2 অথেন্টিকেশনের পরে ইউজার ডেটা রিসিভ করতে Principal ব্যবহার করা হয়।
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class OAuth2Controller {
@GetMapping("/")
public String index() {
return "index"; // একটি সাধারণ হোম পেজ
}
@GetMapping("/welcome")
public String welcome(@AuthenticationPrincipal OAuth2User user, Model model) {
model.addAttribute("name", user.getAttribute("name"));
model.addAttribute("email", user.getAttribute("email"));
return "welcome"; // ইউজারের তথ্য দেখানোর জন্য পেজ
}
}
৫. Frontend (HTML Templates)
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome to Spring Boot OAuth2</h1>
<a href="/oauth2/authorization/google">Login with Google</a>
</body>
</html>
welcome.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome</title>
</head>
<body>
<h1>Welcome, ${name}</h1>
<p>Your email: ${email}</p>
<a href="/logout">Logout</a>
</body>
</html>
৬. রান এবং টেস্টিং
- Spring Boot অ্যাপ্লিকেশন চালু করুন।
- ব্রাউজারে
http://localhost:8080এ যান। - Google Login বাটনে ক্লিক করুন।
- লগইন সফল হলে, ওয়েলকাম পেজে ইউজারের নাম এবং ইমেইল দেখাবে।
OAuth2 এর গুরুত্বপূর্ণ উপাদান
- Client Registration: অ্যাপ্লিকেশন যে OAuth2 প্রোভাইডার ব্যবহার করবে তার তথ্য।
- Authorization Grant Type:
authorization_code,implicit,password, বাclient_credentials। - Redirect URI: লগইন সফল হলে ইউজারকে কোথায় রিডাইরেক্ট করা হবে।
- Scopes: কোন ধরনের ডেটা অ্যাক্সেসের জন্য অনুমতি প্রয়োজন।
উপসংহার
Spring Boot-এর মাধ্যমে OAuth2 ইন্টিগ্রেশন সহজ এবং কার্যকর। এটি আপনার অ্যাপ্লিকেশনকে সিকিউর অথেন্টিকেশন মডেলে উন্নীত করতে সহায়তা করে। যদি আপনার নির্দিষ্ট প্রয়োজন বা সমস্যার জন্য সাহায্য দরকার হয়, জানাবেন! 😊
Read more